Skip to content

elif 语句

elif 语句示例

elif 是 else+if 的简写,一定要跟着 if 后面。它先否定前面的 if 条件,然后再加一个新的条件。

它的语法意义是为了减少使用嵌套结构,让代码更清晰。

以下两组代码是等价的。

python
score = int(input())
if score >= 60:
	if score >= 90:
		print(score, 'excellent')
	else:
		print(score, 'pass')
else:
	print(score, 'fail')
python
score = int(input())
if score >= 90:
	print(score, 'excellent')
elif score >= 60:
	print(score, 'pass')
else:
	print(score, 'fail')

选择结构

py
score = int(input())
if score >= 90:
	print('excellent')
elif score >= 60:
	print('pass')
else:
	print('fail')

如果输入90,程序会输出

如果输入80,程序会输出

如果输入50,程序会输出

[0/3]

对比

可以对比一下跟之前这道题的区别。

选择结构

py
score = int(input())
if score >= 90:
	print('excellent',end=' ')
if score >= 60:
	print('pass',end=' ')
else:
	print('fail')

如果输入90,程序会输出

如果输入50,程序会输出

[0/2]

elif 语句一般形式

python
if {condition}:
	{statement1}
	{statement2}
	……
elif:
	{statement3}
	{statement4}
	……
elif……
else:
	{statement5}
	{statement6}
	……

elif 并列存在

可以有多个 elif 并列存在。

可以没有 else

elif 后面可以没有 else。

python
score = int(input())
if score >= 90:
	print(score, 'excellent')
elif score >= 60:
	print(score, 'pass')
elif score >= 0:
	print(score, 'fail')

选择结构

以下程序语法正确的是?

[0/1]

elif 的隐藏条件

elif 是 else+if 的组合,它首先是否定前面的 if 条件,形成一个自己的隐藏条件,然后再加一个新的条件。 例如elif score >= 80其真实条件是否定if score >= 90后得到score < 90再加上score >= 80,最终效果是if 80 <= score < 90。所以在 score 输入 90 分时,虽然elif score >= 80条件看似也成立,但是不会执行。

python
score = int(input())
if score >= 90:
	print(score, 'excellent')
elif score >= 80: # 80 <= score <90
	print(score, 'good')
elif score >= 60: # 60 <= score < 80
	print(score, 'pass')
else: # score < 60
	print(score, 'fail')

elif 与多个并列 if 的区别

如果把上面的示例代码改成多个并列 if 的结构,看似效果也差不多。但是运行后 score 输入 90 就会发现问题。

python
score = int(input())
if score >= 90:
	print(score, 'excellent')
if score >= 80:
	print(score, 'good')
if score >= 60:
	print(score, 'pass')
if score >= 0:
	print(score, 'fail')

错误

此时 excellent、good、pass 和 fail 都会输出,因为 score 是 90 时,这 4 个 if 条件都会成立。

选择结构

py
score = int(input())
if score >= 90:
	print('excellent')
elif score >= 80:
	print('good')
elif score >= 60:
	print('pass')
else: 
	print('fail')

如果输入90,程序会输出

如果输入80,程序会输出

如果输入50,程序会输出

[0/3]

选择结构

py
score = int(input())
if score >= 90:
	print('excellent',end=' ')
if score >= 80:
	print('good',end=' ')
if score >= 60:
	print('pass',end=' ')
if score >= 0:
  print('fail')

如果输入90,程序会输出

如果输入50,程序会输出

[0/2]

elif 的顺序

一个完整的 if-elif-else 语句中,只会执行最先成立的那个条件。例如以下代码中,如果 score 输入 80,只会输出 pass,而不会输出 good。因为一旦elif score >= 60成立了,就会执行其下面的语句,而elif score >= 80虽然也成立,但是不会再去判断和执行。示意图可参照上面的elif 流程图。所以要注意 elif 的排列顺序。

python
score = int(input())
if score >= 90:
	print(score, 'excellent')
elif score >= 60:
	print(score, 'pass')
elif score >= 80:
	print(score, 'good')
else:
	print(score, 'fail')